package Logic.Objects;

import java.io.Serializable;

import Conf.Consts;

public class GameOptions implements Serializable {
	private static final long serialVersionUID = Consts.Version;

	//In case of a tie, what happens
	public enum Aggression { BothDead, AttackerWins; }
	
	//Will bombs disappear after explosion
	public enum BombsReuse { OneTime, MultiBomb; }
	
	//explosion radius
	public enum BombsExplosion { Regular, Big; }
	
	//what do you see on your board 
	public enum BoardVisibility { VisibleToMe, VisibleToAll };

	// who sees the fighters in a fight 
	public enum FightVisibility { OnlyFighters, Everyone };

	
	//if Blitzkrieg  is on a winning attacker gets another turn
	public enum Blitzkrieg { Off, On; }
	
	public enum VisibleFlag { Off, On; }
	
	public enum MovableFlag { Off, On; }
	
	public enum FlagCapture { SoldiersDie, SoldiersBelongToTheCapturer; } 
	
	private Aggression aggression  = Aggression.BothDead;
	private BombsReuse bombReuse = BombsReuse.MultiBomb;
	private BoardVisibility boardVisibility = BoardVisibility.VisibleToMe;
	private FightVisibility fightVisibility = FightVisibility.Everyone;
	private BombsExplosion bombsExplosion = BombsExplosion.Regular;
	private Blitzkrieg blitzkrieg = Blitzkrieg.Off;
	private VisibleFlag visibleFlag = VisibleFlag.Off;
	private MovableFlag movableFlag = MovableFlag.Off;
	private FlagCapture flagCapture = FlagCapture.SoldiersDie;
	
	
	public Aggression getAggression() {
		return aggression;
	}
	public void setAggression(Aggression aggression) {
		this.aggression = aggression;
	}
	public BombsReuse getBombReuse() {
		return bombReuse;
	}
	public void setBombReuse(BombsReuse bombReuse) {
		this.bombReuse = bombReuse;
	}
	public BoardVisibility getBoardVisibility() {
		return boardVisibility;
	}
	public void setBoardVisibility(BoardVisibility visibility) {
		this.boardVisibility = visibility;
	}
	public BombsExplosion getBombsExplosion() {
		return bombsExplosion;
	}
	public void setBombsExplosion(BombsExplosion bombsExplosion) {
		this.bombsExplosion = bombsExplosion;
	}
	public Blitzkrieg getBlitzkrieg() {
		return blitzkrieg;
	}
	public void setBlitzkrieg(Blitzkrieg blitzkrieg) {
		this.blitzkrieg = blitzkrieg;
	}
	public VisibleFlag getVisibleFlag() {
		return visibleFlag;
	}
	public void setVisibleFlag(VisibleFlag visibleFlag) {
		this.visibleFlag = visibleFlag;
	}
	public MovableFlag getMovableFlag() {
		return movableFlag;
	}
	public void setMovableFlag(MovableFlag movableFlag) {
		this.movableFlag = movableFlag;
	}
	public FlagCapture getFlagCapture() {
		return flagCapture;
	}
	public void setFlagCapture(FlagCapture flagCapture) {
		this.flagCapture = flagCapture;
	}
	public void setFightVisibility(FightVisibility fightVisibility) {
		this.fightVisibility = fightVisibility;
	}
	public FightVisibility getFightVisibility() {
		return fightVisibility;
	}
	
}
